package cn.gcjxsc.repository.salesaman;

import cn.gcjxsc.entity.salesman.Salesman;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.math.BigDecimal;

public interface SalesmanRepository extends JpaRepository<Salesman, Integer>, JpaSpecificationExecutor<Salesman> {


    /**
     * 查询指定会员绑定的店铺数量
     * @param id 会员id
     * @return 返回会员已与店铺绑定的数量
     */
    long countByMemberIdAndStatus(Integer id, Integer status);

    /**
     * 查询指定店铺的业务员数量
     * @param storeId 店铺id
     * @return 返回业务员的数量,如果没有,返回0
     */
    long countByStoreIdAndStatus(Integer storeId, Integer status);

    /**
     * 查询业务员与店铺的关系
     * @param mid 会员id
     * @param storeId 店铺id
     * @return
     */
    long countByMemberIdAndStoreIdAndStatus(Integer mid, Integer storeId, Integer status);

    /**
     * 更新指定业务员的收益比例
     * @param id 业务员id
     * @param ratio 收益比例
     * @return 返回受影响的记录数
     */
    @Modifying
    @Query("update Salesman o set o.ratio=:ratio where id = :id")
    int setRatio(@Param("id") Integer id, @Param("ratio") BigDecimal ratio);

    Salesman findByStoreIdAndMemberIdAndStatus(Integer storeId, Integer memberId, Integer status);
}
